vlwkaos' digital garden

Rust - CLI implement grep like function

텍스트 파일에서 특정 패턴을 포함하는 줄을 출력해보자

    // ## 1.3 First Implementation
    // 파일을 읽어보자
    // TODO: improve with Nice error reporting
    let content = std::fs::read_to_string(&args.path)
        .expect("could not read file"); // quit with message when error, 
    
    // 한줄씩 읽는다
    for line in content.lines() {
        // pattern을 포함하는 경우만 출력
        if line.contains(&args.pattern) {
            println!("{}", line);
        }
    }
    // !! 파일 전체를 메모리에 올리기 떄문에 효율적인 방식은 아니다.
    // read_to_string() 대신에 BufReader등을 이용하여 최적화 해보자

BufReader을 활용하여 파일을 읽어보자.

    let f = File::open(&args.path);
    let f = match f {
        Ok(file) => BufReader::new(file),
        Err(err) => {panic!("No such file found.");}
    };
    
    // 한줄씩 읽는다
    for line in f.lines() {
        // pattern을 포함하는 경우만 출력
        let l = line.unwrap();
        if l.contains(&args.pattern) {
            println!("{}", l);
        }
    }

[[Rust - CLI Nicer error reporting]]

Rust - CLI implement grep like function